package com.ruoyi.mould.service.impl;

import com.ruoyi.common.core.text.Convert;
import com.ruoyi.mould.domain.JacMouldLog;
import com.ruoyi.mould.mapper.JacMouldLogMapper;
import com.ruoyi.mould.service.IJacMouldLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 模具的成本记录Service业务层处理
 *
 * @author wq
 * @date 2021-02-19
 */
@Service
public class JacMouldLogServiceImpl implements IJacMouldLogService
{
    @Autowired
    private JacMouldLogMapper jacMouldLogMapper;

    /**
     * 查询模具的成本记录
     *
     * @param id 模具的成本记录ID
     * @return 模具的成本记录
     */
    @Override
    public JacMouldLog selectJacMouldLogById(Long id)
    {
        return jacMouldLogMapper.selectJacMouldLogById(id);
    }

    /**
     * 查询模具的成本记录列表
     *
     * @param jacMouldLog 模具的成本记录
     * @return 模具的成本记录
     */
    @Override
    public List<JacMouldLog> selectJacMouldLogList(JacMouldLog jacMouldLog)
    {
        return jacMouldLogMapper.selectJacMouldLogList(jacMouldLog);
    }

    /**
     * 新增模具的成本记录
     *
     * @param jacMouldLog 模具的成本记录
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertJacMouldLog(JacMouldLog jacMouldLog)
    {
        if("true".equals(jacMouldLog.getIsvalid())){
            //当记录是启用变更的状态后，启用变更状态，则将现有模具数据的总成本、分摊成本以及待分摊成本均加上变更金额；
            if( "changed".equals(jacMouldLog.getMouldtype()) && "true".equals(jacMouldLog.getIsshare())){
                jacMouldLogMapper.updateJacMouldMouldByShareChange(jacMouldLog);
            }
            //当因为变更导致模具成本发生不应用于分摊的成本变更后,启用变更状态，则将现有模具数据的总成本加上变更金额
            else if( "changed".equals(jacMouldLog.getMouldtype()) && "false".equals(jacMouldLog.getIsshare())){
                jacMouldLogMapper.updateJacMouldMouldByShareChange(jacMouldLog);
            }
            //当因为变更导致模具成本发生应用于分摊的成本转移，当启用变更后，此时成本属于转移，不属于模具的成本，但是会体现在待分摊成本中，因此更新转移双方模具代码的已转移金额，在模具接收方的已转移金额中，在原金额的基础上减去本次成本，待分摊金额则增加本次成本；在模具转出方的已转移金额上加上本次成本，待分摊成本上则减去本次成本
            else if("transfer".equals(jacMouldLog.getMouldtype()) && "true".equals(jacMouldLog.getIsshare())){

            }
        }
        return jacMouldLogMapper.insertJacMouldLog(jacMouldLog);
    }

    /**
     * 修改模具的成本记录
     *
     * @param jacMouldLog 模具的成本记录
     * @return 结果
     */
    @Override
    public int updateJacMouldLog(JacMouldLog jacMouldLog)
    {
        return jacMouldLogMapper.updateJacMouldLog(jacMouldLog);
    }

    /**
     * 删除模具的成本记录对象
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteJacMouldLogByIds(String ids)
    {
        return jacMouldLogMapper.deleteJacMouldLogByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除模具的成本记录信息
     *
     * @param id 模具的成本记录ID
     * @return 结果
     */
    public int deleteJacMouldLogById(Long id)
    {
        return jacMouldLogMapper.deleteJacMouldLogById(id);
    }
}
